"""
微信公众平台API使用示例

本示例展示了如何使用WeChatAPI类调用微信公众平台的各种功能。
在运行前，请确保已正确设置AppID和AppSecret。
"""

import os
import json
from cn_api_adapters import WeChatAPI


def wechat_api_example():
    """
    微信公众平台API使用示例函数
    """
    # 1. 初始化WeChatAPI
    # 从环境变量获取配置或直接设置
    app_id = os.getenv('WECHAT_APPID', 'your_app_id')
    app_secret = os.getenv('WECHAT_APPSECRET', 'your_app_secret')
    
    # 创建API实例
    wechat = WeChatAPI(app_id=app_id, app_secret=app_secret, debug=True)
    
    print("微信公众平台API使用示例")
    print("="*50)
    
    # 2. 获取AccessToken
    try:
        # 内部会自动刷新token
        token = wechat.access_token
        print(f"\n1. 获取AccessToken成功: {token[:10]}...")
    except Exception as e:
        print(f"获取AccessToken失败: {e}")
        return
    
    # 3. 发送模板消息
    try:
        print("\n2. 发送模板消息示例:")
        template_data = {
            "touser": "openid",  # 用户的openid
            "template_id": "your_template_id",  # 模板ID
            "url": "https://example.com",  # 点击模板卡片跳转的URL
            "data": {
                "first": {"value": "这是一个模板消息示例", "color": "#173177"},
                "keyword1": {"value": "测试订单", "color": "#173177"},
                "keyword2": {"value": "¥99.00", "color": "#ff0000"},
                "keyword3": {"value": "2023-01-01 12:00:00", "color": "#173177"},
                "remark": {"value": "感谢您的使用", "color": "#173177"}
            }
        }
        
        # 注意：实际使用时需要替换为有效的openid和template_id
        # result = wechat.send_template_message(**template_data)
        print("模板消息发送示例配置已准备好，请替换为有效的参数后使用")
    except Exception as e:
        print(f"发送模板消息失败: {e}")
    
    # 4. 创建菜单
    try:
        print("\n3. 创建自定义菜单示例:")
        menu_data = {
            "button": [
                {
                    "name": "扫码",
                    "sub_button": [
                        {
                            "type": "scancode_waitmsg",
                            "name": "扫码带提示",
                            "key": "rselfmenu_0_0"
                        },
                        {
                            "type": "scancode_push",
                            "name": "扫码推事件",
                            "key": "rselfmenu_0_1"
                        }
                    ]
                },
                {
                    "type": "view",
                    "name": "搜索",
                    "url": "https://www.baidu.com/"
                },
                {
                    "type": "click",
                    "name": "今日歌曲",
                    "key": "V1001_TODAY_MUSIC"
                }
            ]
        }
        
        # 注意：实际使用时需要替换为符合您需求的菜单数据
        # result = wechat.create_menu(menu_data)
        print("自定义菜单配置已准备好，请替换为有效的菜单数据后使用")
    except Exception as e:
        print(f"创建自定义菜单失败: {e}")
    
    # 5. 获取用户列表
    try:
        print("\n4. 获取用户列表示例:")
        # result = wechat.get_user_list()
        print("用户列表获取方法已准备好")
    except Exception as e:
        print(f"获取用户列表失败: {e}")
    
    # 6. 生成二维码
    try:
        print("\n5. 生成二维码示例:")
        # 临时二维码
        # result = wechat.create_qrcode(scene_id=123, expire_seconds=604800)
        # 永久二维码
        # result = wechat.create_qrcode(scene_str="test", is_temp=False)
        print("二维码生成方法已准备好")
    except Exception as e:
        print(f"生成二维码失败: {e}")
    
    print("\n" + "="*50)
    print("微信公众平台API示例演示完成")


if __name__ == "__main__":
    wechat_api_example()